package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
	"time"
)

//FileName :作业.go
//ime :2024/3/28 23:40
//Author :syr030111

//从键盘接收用户输入的身份证号码  以4开头18位数字，判断输入合法性
//431224201805189999  获取身份证上的出生年月日，判断这个人是否大于18岁
//大于18岁提示“录用”，否则提示“劝退”

/*
1.从键盘接收用户输入的内容
2.判断数字串是否以4开头，且正好18位
3.获取7-14位，得到出生年月
4.与当前年月相减得到年龄
5.判断是否大于18，是则输出录用，否则输出劝退
*/

func main() {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print("请输入任意字符串: ")
	input, _ := reader.ReadString('\n') // 读取用户输入的字符串
	input = strings.TrimSpace(input)    // 去除字符串两端的空白字符，包括空格和换行符

	if len(input) == 18 && input[0] == '4' {
		fmt.Println("输入合法")
		// 获取第7到第14位的子串
		a := input[6:14]

		// 提取年份和月份
		year := a[:4]
		month := a[4:6]

		// 将年份和月份转换为整数（如果需要的话）
		y, _ := strconv.Atoi(year)
		m, _ := strconv.Atoi(month)

		// 格式化出生年月
		//nyr := fmt.Sprintf("%d年%02d月", y, m)

		// 获取当前日期
		now := time.Now()
		ny, nm, _ := now.Date()

		// 构造出生年月的时间对象
		t := time.Date(y, time.Month(m), 1, 0, 0, 0, 0, time.UTC)

		// 计算年龄
		age := ny - y
		if nm < time.Month(m) || (nm == time.Month(m) && now.Before(t)) {
			age--
		}

		// 输出结果
		fmt.Printf("年龄: %d\n", age)

		// 判断
		if age >= 18 {
			fmt.Println("录用")
		} else {
			fmt.Println("劝退")
		}

	} else {
		fmt.Println("输入不合法")
	}

}
